package com.sisgesbyte.services.localizacion;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Inject;

import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.common.Validaciones;
import com.sisgesbyte.dao.localizacion.LocalizacionPaisDao;
import com.sisgesbyte.data.entity.localizacion.PaisEntity;
import com.sisgesbyte.services.localizacion.bean.ListaPaisesResponse;
import com.sisgesbyte.services.localizacion.bean.PaisBean;

@Stateless
public class MantenimientoPaisImpl implements MantenimientoPais {

	@EJB
	private LocalizacionPaisDao localizacionPaisDao;
	
	@Inject
	private Validaciones validaciones;
	
	@Override
	public ListaPaisesResponse listarPaises(String codTransaccion) {
		String mensajeTransaccionMetodo = "[listarPaises idTx=" + codTransaccion + "] - ";
		ListaPaisesResponse response = new ListaPaisesResponse();
		List<PaisEntity> reqPais = null;
		
		try{
			response.setIdTransaccion(codTransaccion);
			try{
				reqPais = localizacionPaisDao.listaPaises();
			}catch(Exception e){
				System.out.println(mensajeTransaccionMetodo + "Hubo un error al listar de  BD " + e);
				response.setCodigoRespuesta(ConstantesInternasSistema.PAIS_LISTAR_COD_IDT63);
				response.setMensajeRespuesta(ConstantesInternasSistema.PAIS_LISTAR_MSJ_IDT63);
				return response;
			}
			
			if(reqPais.size()> 0){
				List<PaisBean> listPais = new ArrayList<PaisBean>();
				for(PaisEntity lista :reqPais){
					PaisBean bean = new PaisBean();
					bean.setActive(lista.getActive());
					bean.setCodContinente(validaciones.validarCamposString(lista.getCod_continente()));
					bean.setCodigo(validaciones.validarCampoInteger(lista.getId()));
					bean.setCodMap(validaciones.validarCamposString(lista.getCod_map()));
					bean.setCodPais(validaciones.validarCamposString(lista.getCod_pais()));
					bean.setContinente(validaciones.validarCamposString(lista.getContinente()));
					bean.setLatMap(lista.getLat_map());
					bean.setLngMap(lista.getLng_map());
					bean.setPais(validaciones.validarCamposString(lista.getPais()));
					bean.setZoom(validaciones.validarCampoInteger(lista.getZoom_default()));
					listPais.add(bean);
				}
				response.setListaPaises(listPais);
				response.setCodigoRespuesta(ConstantesInternasSistema.CODIGO_EXITO);
				response.setMensajeRespuesta(ConstantesInternasSistema.MENSAJE_EXITO);
			}else{
				response.setCodigoRespuesta(ConstantesInternasSistema.PAIS_LISTAR_COD_IDF62);
				response.setMensajeRespuesta(ConstantesInternasSistema.PAIS_LISTAR_MSJ_IDF62);
			}
		}catch(Exception e){
			System.out.println(mensajeTransaccionMetodo + "Hubo un error en el proceso " + e);
			response.setCodigoRespuesta(ConstantesInternasSistema.PAIS_LISTAR_COD_IDT63);
			response.setMensajeRespuesta(ConstantesInternasSistema.PAIS_LISTAR_MSJ_IDT63);
			return response;
		}
		return response;
	}

}
